Модуль:ProcessArgs
local p = {} p.bullet = " • " -- checks if a param is given (i. e. neither null nor whitespace) function p.isGiven(param) if type(param) "string" then -- special checks for strings if string.gsub(param, "%s*", "") "" then -- remove all whitespace before checking if empty return false else return true end elseif param nil then -- return false if nil return false else -- return true in all other cases return true end end function p.getFrameAndArgs(frame) frame = frame or {} local args -- Make frame.args a fully functional table if frame.args then local frame_args = frame.args frame.args = {} for k, v in pairs(frame_args) do frame.argsk = v end end if frame.args and next(frame.args) ~= nil then args = frame.args -- use args from #invoke elseif type(frame.getParent) "function" then local pframe = frame:getParent() -- Make pframe.args a fully functional table local pframe_args = pframe.args pframe.args = {} for k, v in pairs(pframe_args) do pframe.argsk = v end args = pframe.args -- get args from template call else args = frame -- assume directly passed in args frame = mw.getCurrentFrame() end return frame, args end function p.unescape(s) local news = s for start, stop in s:gmatch("&#()%d*();") do -- need to be relative to end, otherwise the indexes will be incorrect once the strigh's length changes start = start-1 - #s stop = stop-2 - #s news = news:sub(1, start-3) .. string.char(tonumber(s:sub(start, stop))) .. news:sub(stop+2) end return news end -- generates a span tag that automatically cycles through the given image list function p.anim(images, size) if p.isGiven(images) then images = p.unescape(images) local r = "" r = r .. " " return r end end function p.mwAnim(frame) return p.anim(frame.args.images, frame.args.size) end -- generates a Semantic MediaWiki property function p.smwProp(name, value, display) if p.isGiven(name) and p.isGiven(value) then if p.isGiven(display) or display " " then return "" .. display .. "" else return "" .. name .. "::" .. value .. "" end end return nil end -- trims leading and trailing whitespace characters from a given string function p.trim(str) if p.isGiven(str) then return string.gsub(str, "^%s*(.-)%s*$", "%1") end return "" end -- appends px to a given value, only if it's not already there function p.px(val) if tonumber(val) then return val .. "px" end if p.isGiven(val) then return string.gsub(val, "^(%d+)(?:px)?$", "%1px") end return "" end -- creates an internal MediaWiki link function p.link(page, text, anchor) if p.isGiven(page) then local out = "" .. text end out = out .. "" return out end return "" end -- creates an image link function p.img(page, size, link, alt) if p.isGiven(page) then local out = " " return out end return "" end -- capitalize the first letter of a given string function p.cap(str) return (str:gsub("^%l", string.upper)) end -- parses seconds to a min:sec string function p.parseTime(seconds) if (seconds < 10) then return '0:0' .. seconds elseif (seconds < 60) then return '0:' .. seconds else local sec = seconds % 60 local min = (seconds - sec) / 60 if (sec < 10) then return min .. ':0' .. sec else return min .. ':' .. sec end end end -- formats a number with commas -- http://lua-users.org/wiki/FormattingNumbers function p.commaValue(n) local left, num, right = string.match(n, '^(^%d*%d)(%d*)(.-)$') return left .. (num:reverse():gsub('(%d%d%d)', '%1,'):reverse()) .. right end return p